草庐IT

Java SE - 集合

全部标签

java - 如何用jpa映射抽象集合?

我正在尝试找出是否有可能让JPA持久化具有具体实现的抽象集合。到目前为止,我的代码如下所示:@EntitypublicclassReportextendsModel{@OneToMany(mappedBy="report",fetch=FetchType.EAGER)publicSetitems;}@MappedSuperclasspublicabstractclassOpsItemextendsModel{@ManyToOnepublicRetailOpsBranchreport;}@Entity@Inheritance(strategy=InheritanceType.TABLE_

java - 初始化惰性集合

我正在开发一个Struts2+Spring+Hibernatewebapp,我需要在检索一个对象或该对象的集合后初始化一个惰性集合。用例我有一个team模型,其中急切加载了一个名为employees的关系(我认为很明显这是一个集合)。反过来,employee模型有一个惰性关系registry,我只需要它来执行某些特定操作,所以我根本不需要急切地加载它。现在。我调用我teamService(用Spring注入(inject)我的Struts2Controller)以检索特定的teamItem已经加载了他的集合employees。现在是时候为每个员工加载其注册表关系了。使用employee

java - 将集合映射到所有组合的列表中

我被一个简单的任务困住了。我想做的是改造Map>进入List>获取所有可能的组合:Map{{'k1'=>set{'v11','v12'}},{'k2'=>set{'v21','v22','v23'}},{'k3'=>set{'v31'}}}预期结果:List{Map{'k1'=>'v11','k2'=>'v21','k3'=>'v31'},Map{'k1'=>'v11','k2'=>'v22','k3'=>'v31'},Map{'k1'=>'v11','k2'=>'v23','k3'=>'v31'},Map{'k1'=>'v12','k2'=>'v21','k3'=>'v31'},Ma

Java 集合与内存数据库性能

我不确定是使用Java集合还是某些内存数据库(H2或HSQLDB-它们可能是最快的)。我需要一个好的性能结果-将有数百个对象/行,不会执行JOIN或更复杂的查询。我真的在考虑内存数据库,因为java堆的大小有限——我正在使用的对象可能非常大,而且会有很多(我提到的有数百个)您认为对大量数据使用内存数据库是个好主意吗? 最佳答案 数百个10KB的对象仍然只有几MB。保持简单是我的建议。数十万个1KB的对象仍然可以轻松放入32位JVM。在您处理GB级数据之前,我不会使用内存数据库。如果您有数百GB,您唯一的选择是使用某种数据库。免责声明

java - 处理 JAXB 集合

我正在尝试使用JAXB解码以下XML:AnameAname2我已经使用XJC生成了所有类。如果我想访问Composers集合,我必须这样做:Listcomposers=work.getComposers().getComposer();有什么方法可以改为执行以下操作吗?Listcomposers=work.getComposers();我明白需要一个Composers对象,因为它派生自XML,但是在处理Java时,拥有一个存储集合的中间POJO似乎有点多余。我的XSD是: 最佳答案 @XmlElementWrapper插件完全符合您

java - 是否可以创建其成员仅实现多个接口(interface)的类型安全的 Java 集合?

如果我有:interfaceA{voida();}interfaceB{voidb();}我可以有一个像这样的通用方法:classC{voidc(Tt){t.a();t.b();}}但我不能拥有像这样的通用集合:classD{Listl;}我知道我可以创建一个同时扩展A和B的空接口(interface)E,并有一个包含E的列表...但我宁愿让我的类仅标记为A和B,而不必一个E。当有更多的A和B可以以2^n种方式组合时,这就更成问题了。我宁愿能够动态定义一个类型,作为接口(interface)的联合,并让集合将实现所有接口(interface)的对象识别为该类型的实例。有没有办法在Jav

java - 如何获取集合的第n个元素

更具体地说:如何获得LinkedHashSet的第n个元素(它有一个可预测的迭代顺序)?我想检索插入到此Set中的第n个元素(尚未存在)。使用List是否更好:Listlist=newArrayList(mySet);Tvalue=list.get(x);//x或toArray(T[]a)方法:T[]array=mySet.toArray(newT[mySet.size()]);Tvalue=array[y];//y除了(可能是轻微的)性能差异外,还有什么需要注意的吗?有明显的赢家吗?编辑1注意:为什么我想要最后插入的元素并不重要,重要的是我想要它。LinkedHashSet之所以被特

java - 是否有一个队列(PriorityQueue)实现也是一个集合?

我正在寻找PriorityQueue实现也是Set.compareTo的实现如果它的元素必须不要求与equals的实现保持一致。Java有这样的实现吗?更新:我现在使用SortedSet作为内部集合来实现它。所以我只需要实现缺少的方法来满足队列接口(interface)。我还忘了提到它也必须是有界队列,因此它具有容量并在达到容量时丢弃集合的最后一个元素。 最佳答案 如果拥有一个具有“类似集合”行为的队列就足够了,我想你只是不想接受重复的条目,那么我认为,一个简单的解决方案可能是子类化PriorityQueue并覆盖add()、add

java - 默认集合类型

假设您需要在Collection中存储/检索项目,不关心顺序,并且允许重复,您使用什么类型的Collection?默认情况下,我一直使用ArrayList,但我记得在某处读到/听到过,Queue实现可能是更好的选择。List允许在任意位置添加/检索/删除项目,这会导致性能下降。由于Queue不提供此功能,理论上它在不需要此功能时应该更快。我意识到所有关于性能的讨论都有些毫无意义,唯一真正重要的是衡量。不过,我很想知道其他人在Collection中使用什么,当他们不关心顺序并且允许重复时,为什么? 最佳答案 “这取决于”。你真正需要首

java - 二级缓存 vs 查询缓存 vs 集合缓存?

据我了解,当使用主键加载对象时,将使用二级缓存。这包括获取关联。我只能想到上面的session.get()、session.load方法,其中二级缓存将出现在图片中。如果关联是集合或其他一些实体,如何缓存它?例如:-@CacheablepublicclassDepartment{privateListEmployees;privateDepatmentDetaildetail;}如何使关联员工和详细信息可缓存?我想我需要在关联员工和细节上面提到@cache。但这不起作用?当开发人员执行department.getEmployees()时,hibernate将在内部触发查询,即selec